他のテンプレートシステムを使う
=================================

Yii では開発者が好みのテンプレート (例: Prado や Smarty など) を使ってビューを書くことができます。
これは [viewRenderer|CWebApplication::viewRenderer] を作成して、コンポーネントに追加することで可能になります。
ビューレンダラは [CBaseController::renderFile] の呼び出しを横取りして、ビューファイルをカスタマイズされたテンプレート文法でコンパイルし、結果を表示します。

> Info|情報: カスタマイズされたテンプレート文法を利用するのは、再利用される可能性が低いビューを書く場合に限ることをおすすめします。
そうしないと、ビューを再利用しようとする人に対して、カスタマイズされたテンプレート文法の使用を強制することになります。

以下に [CPradoViewRenderer] を使う方法を示します。
このビューレンダラを使うと、ビューを [Prado framework](http://www.pradosoft.com/) と似た文法で書くことができます。
独自のレンダラを開発したい場合は、 [CPradoViewRenderer] は良い参考になるでしょう。

`CPradoViewRenderer` を使う
--------------------------

[CPradoViewRenderer] を使うには、以下のようにアプリケーション設定を変更する必要があります。

~~~
[php]
return array(
	'components'=>array(
		......,
		'viewRenderer'=>array(
			'class'=>'CPradoViewRenderer',
		),
	),
);
~~~

デフォルトでは、[CPradoViewRenderer] はビューファイルをコンパイルした結果を [runtime](/doc/guide/basics.convention#sec-5) ディレクトリ以下に保存します。
ビューテンプレートが変更された場合のみ、コンパイルされたファイルが再生成されるので、[CPradoViewRenderer] を使ってもパフォーマンスの低下はほんの少しです。

> Tip|ヒント: [CPradoViewRenderer] では、主にビューの記述を簡単かつすばやくできる新しいタグを導入しますが、それらを使わずに PHP コードをそのまま書くことも可能です。

以下では [CPradoViewRenderer] で利用可能なテンプレートタグを紹介します。

### ショート PHP タグ

ショート PHP タグは、ビューで PHP コードを書く際のショートカットです。
`<%= expression %>` という出力タグは、`<?php echo expression ?>` と同じ意味です。
`<% statement %>` という宣言タグは、`<?php statement ?>` と同じ意味です。
たとえば、

~~~
[php]
<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>
~~~

というタグは、

~~~
[php]
<?php echo CHtml::textField($name,'value'); ?>
<?php foreach($models as $model): ?>
~~~
と同じです。

### コンポーネントタグ

コンポーネントタグは [widget](/doc/guide/basics.view#sec-3) をビューに挿入する際に利用されます。
以下のような文法で利用します。

~~~
[php]
<com:WidgetClass property1=value1 property2=value2 ...>
	// ウィジェットの body content
</com:WidgetClass>

// body content なしのウィジェット
<com:WidgetClass property1=value1 property2=value2 .../>
~~~

ここで、`WidgetClass` はウィジェットクラスの名前、またはクラスの [パスエイリアス](/doc/guide/basics.namespace) を指定します。
プロパティの初期値は、引用符号で囲まれた文字列か、中括弧で囲まれた PHP コードで指定することが可能です。
例えば、

~~~
[php]
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
~~~

この内容は、

~~~
[php]
<?php $this->widget('CCaptcha', array(
	'captchaAction'=>'captcha',
	'showRefreshButton'=>false)); ?>
~~~

このように翻訳されます。

> Note|注意: `showRefreshButton`の値が、`"false"` ではなく、`{false}` と指定されていることに注意してください。
なぜなら、前者の書き方では単なる文字列を意味し、ブール値ではなくなってしまうからです。

### キャッシュタグ

キャッシュタグは [フラグメントキャッシュ](/doc/guide/caching.fragment) を利用するためのショートカットです。
以下のように書きます。

~~~
[php]
<cache:fragmentID property1=value1 property2=value2 ...>
	// キャッシュされる内容
</cache:fragmentID >
~~~

`fragmentID` がキャッシュされる内容を一意に決定する識別子です。
プロパティと値のペアでキャッシュの設定を指定します。
例えば、

~~~
[php]
<cache:profile duration={3600}>
	// ユーザプロファイル情報
</cache:profile >
~~~

この記述は、

~~~
[php]
<?php if($this->beginCache('profile', array('duration'=>3600))): ?>
	// ユーザプロファイル情報
<?php $this->endCache(); endif; ?>
~~~

このように翻訳されます。

### クリップタグ

キャッシュタグと同じように、クリップタグはビューファイルで [CBaseController::beginClip] と [CBaseController::endClip] を呼ぶためのショートカットです。
以下のように記述します。

~~~
[php]
<clip:clipID>
	// クリップされる内容
</clip:clipID >
~~~

`clipID` がクリップされる内容を一意に決定する識別子です。

~~~
[php]
<?php $this->beginClip('clipID'); ?>
	// クリップされる内容
<?php $this->endClip(); ?>
~~~

### コメントタグ

コメントタグはビューで開発者のみが読めるコメントを書くために使われます。
コメントタグはビューがユーザに表示されたときにはなくなっています。
以下のように記述します。

~~~
[php]
<!---
ビューコメントは取り除かれます
--->
~~~

テンプレート形式を混用する
-----------------------

バージョン 1.1.2 以降、何らかの代替テンプレート文法を通常の PHP 文法と併用することが可能になりました。
そうするためには、インストールされているビューレンダラの [CViewRenderer::fileExtension] プロパティを `.php` 以外の値に構成する必要があります。
例えば、プロパティを `.tpl` と設定すると、`.tpl` で終るすべてのビューファイルがインストールされたビューレンダラを使って表示され、一方、`.php` で終るその他のすべてのビューファイルは通常の PHP ビュースクリプトとして取り扱われることになります。

<div class="revision">$Id$</div>
